package com.itheima.service;

/**
 * @author SWJ
 * @create 2021-08-12 23:11
 */

//CheckItemServiceImpl实现类

import com.alibaba.dubbo.config.annotation.Service;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.itheima.dao.CheckItemDao;
import com.itheima.entity.PageResult;
import com.itheima.entity.QueryPageBean;
import com.itheima.pojo.CheckItem;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * 检查项服务
 */
@Service(interfaceClass = CheckItemService.class)

//添加service实现类
@Transactional
//添加事物
public class CheckItemServiceImpl implements CheckItemService {
    //实现CheckItemService接口
    @Autowired
    //spring 工厂进注入文件
    private CheckItemDao checkItemDao;

    //进行新增检查项目
    public void add(CheckItem checkItem) {
        checkItemDao.add(checkItem);
    }


    //检查项分页查询
    @Override
    public PageResult pageQuery(Integer currentPage, Integer pageSize, String queryString) {
        //完成分页查询基于mybatis框架提供的分页助手插件
        //一般分页查询  select * from_checkitem limit 0,10
        //queryString输入的查询页数
        PageHelper.startPage(currentPage, pageSize);

        Page<CheckItem> page =
                checkItemDao.selectByCondition(queryString);
        //currentPage页码pageSize查询页数
        //tola总的记录数/rowsf赋值页数和页码

        long tolal = page.getTotal();
        List<CheckItem> rows = page.getResult();
        //返回进行封装
        return new PageResult(page.getTotal(), page.getResult());
    }

    //检测项进行删除

    /**
     * 注意：不能直接删除，需要判断当前检查项是否和检查组关联，如果已经和检查组进行了关联则不允许删除
     */
    @Override
    public void deleteByid(Integer id) throws RuntimeException {
        //查询判断当前检查项是否和检查组关联
        long count = checkItemDao.findCountByCheckItemId(id);
        //如果检查项中的数值是大于0显示不能删除
        if(count > 0){
            //当前检查项被引用，不能删除
            throw new RuntimeException("当前检查项被引用，不能删除");
        }
        checkItemDao.deleteById(id);

    }

    // 编辑检查项
    @Override
    public void edit(CheckItem checkItem) {
        checkItemDao.edit(checkItem);
    }

    //根据id查询 当前数据的回显的方法
    @Override
    public CheckItem findById(Integer id) {
        return checkItemDao.findById(id);
    }


    //加载检查项所有数据查询所有数据
    @Override
    public List<CheckItem> findAll() {
        return checkItemDao.findAll();
    }


}
